package com.digitalchina.lxnsy.toolkit;

import android.widget.EditText;
import android.widget.TextView;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * ================================================
 * 项目名称：杨凌农业大数据(数据采集)
 * 类描述：字符串工具类
 * 包名：com.digitalchina.bigdata.toolkit
 * 创建人：郑皓
 * 创建时间：2016/4/12 14:17
 * 修改备注：
 * ================================================
 */
public class StringUtil {

    /**
     * 字符串是否为空
     *
     * @param psStr
     * @return true 为空
     */
    public static boolean isStrEmpty(String psStr) {
        return psStr == null || psStr.trim().length() == 0 || psStr.trim().equals("") || psStr.equals("null");
    }

    /**
     * 判断两字符串是否相同
     *
     * @param psStr
     * @param psEqualStr
     * @return true 相同
     */
    public static boolean isStrEqual(String psStr, String psEqualStr) {
        return psStr.equals(psEqualStr);
    }

    /**
     * 获取EditText无空格内容
     *
     * @param editText
     * @return
     */
    public static String getEditText(EditText editText) {
        return editText.getText().toString().trim();
    }

    /**
     * 获取TextView无空格内容
     *
     * @param textView
     * @return
     */
    public static String getText(TextView textView) {
        return textView.getText().toString().trim();
    }

    /**
     * 判断EditText是否为空
     *
     * @param editText
     * @return true 为空
     */
    public static boolean isEditEmpty(EditText editText) {
        return isStrEmpty(getEditText(editText));
    }

    /**
     * 判断TextView是否为空
     *
     * @param textView
     * @return true 为空
     */
    public static boolean isTextEmpty(TextView textView) {
        return isStrEmpty(getText(textView));
    }

    /**
     * 拼接字符串 可以传入多个参数用","分隔
     *
     * @param strings
     * @return
     */
    public static String jointString(String... strings) {

        StringBuffer stringBuffer = new StringBuffer();
        for (String string : strings) {
            stringBuffer.append(string);
        }

        return stringBuffer.toString();
    }

    /**
     * 使用String的split 方法
     *
     * @param str
     * @return
     */
    public static String[] convertStrToArray(String str) {
        //拆分字符为"," ,然后把结果交给数组strArray
        return str.split(",");
    }

    /**
     * 拼接一年开始日期字符串
     */
    public static String startDateString(String where, String year) {
        if (isStrEqual("fertilizer", where) || isStrEqual("pesticide", where))
            return jointString(year, "/", "01", "/", "01");
        else
            return jointString(year, "/", "01", "/", "01");
    }

    /**
     * 拼接一年结束日期字符串
     */
    public static String endDateString(String where, String year) {
        if (isStrEqual("fertilizer", where) || isStrEqual("pesticide", where))
            return jointString(year, "/", "12", "/", "31");
        else
            return jointString(year, "/", "12", "/", "31");
    }

    /**
     * 取字符串最后一个字符 是否与传入字符相等
     *
     * @param str
     * @param ch
     * @return
     */
    public static boolean lastCharEqu(String str, char ch) {
        if (str.charAt(str.length() - 1) == ch) {
            return true;
        } else {
            return false;
        }
    }


    //从html中提取纯文本
    public static String html2Text(String inputString) {
        String htmlStr = inputString; // 含html标签的字符串
        String textStr = "";
        java.util.regex.Pattern p_script;
        java.util.regex.Matcher m_script;
        java.util.regex.Pattern p_style;
        java.util.regex.Matcher m_style;
        java.util.regex.Pattern p_html;
        java.util.regex.Matcher m_html;
        try {
            String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>"; // 定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script>
            String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>"; // 定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style>
            String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式
            p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
            m_script = p_script.matcher(htmlStr);
            htmlStr = m_script.replaceAll(""); // 过滤script标签
            p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
            m_style = p_style.matcher(htmlStr);
            htmlStr = m_style.replaceAll(""); // 过滤style标签
            p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
            m_html = p_html.matcher(htmlStr);
            htmlStr = m_html.replaceAll(""); // 过滤html标签
            textStr = htmlStr;
        } catch (Exception e) {
            System.err.println("html2Text: " + e.getMessage());
        }
        //剔除空格行
        textStr = textStr.replaceAll("[ ]+", " ");
        textStr = textStr.replaceAll("(?m)^\\s*$(\\n|\\r\\n)", "");
        return textStr;// 返回文本字符串
    }

    //从html中提取纯文本
    public static String stripHtml(String strHtml) {
        String txtcontent = strHtml.replaceAll("</?[^>]+>", ""); //剔出<html>的标签
        txtcontent = txtcontent.replaceAll("<a>\\s*|\t|\r|\n|</a>", "");//去除字符串中的空格,回车,换行符,制表符
        txtcontent = txtcontent.replace("&nbsp;", "");
        txtcontent = txtcontent.replace("&rdquo;", "");
        txtcontent = txtcontent.replace("&ldquo;", "");

        return txtcontent;
    }

    /**
     * 字符串截取 -- 截掉指定字符后面所有的字符串
     *
     * @param oldString 原始字符串
     * @param chars     指定符号
     * @return 新字符串
     */
    public static String removeCharRear(String oldString, String chars) {
        if (isStrEmpty(oldString))
            return "";
        int idx = oldString.indexOf(chars);
        return oldString.substring(0, idx);
    }


    /**
     * 去空格换行
     *
     * @param str
     * @return
     */
    public static String replaceBlank(String str) {
        String dest = "";
        if (str != null) {
            Pattern p = Pattern.compile("\\s*|\t|\r|\n");
            Matcher m = p.matcher(str);
            dest = m.replaceAll("");
        }
        return dest;
    }
}
